--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / remoteBackendUrl.js
Displaying Raw • Download
meshchatx/src/frontend/js/remoteBackendUrl.js e0f1f99cd1c208c5008a936230c38e448dddd45d (e0f1f99c) Text, 1.75 KB
T8b949e/**
* Normalize a MeshChatX remote backend URL for the Android shell.
* Empty string means the on-device local backend.
*/
Tff7b72const Te6edf3LOCAL_BACKEND_URL Tff7b72= Ta5d6ff"https://127.0.0.1:8000"Tb4b4b4;
T8b949e/**
* @param {string | null | undefined} raw
* @returns {string | null} normalized origin without trailing slash, or null for local
*/
Tff7b72export Tff7b72function Te6edf3normalizeRemoteBackendUrlTb4b4b4(Te6edf3rawTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3raw Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3trimmed Tff7b72= Tffa657StringTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3trimmedTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3urlTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3url Tff7b72= Tff7b72new Te6edf3URLTb4b4b4(Te6edf3trimmedTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3scheme Tff7b72= Te6edf3urlTb4b4b4.Te6edf3protocolTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/:$/Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3scheme Tff7b72!== Ta5d6ff"http" Tff7b72&& Te6edf3scheme Tff7b72!== Ta5d6ff"https"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3username Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3passwordTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4.Te6edf3hostnameTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3out Tff7b72= Ta5d6ff`Tffd700${Te6edf3schemeTffd700}Ta5d6ff://Tffd700${Te6edf3urlTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3portTb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Ta5d6ff`Ta5d6ff:Tffd700${Te6edf3urlTb4b4b4.Te6edf3portTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3path Tff7b72= Te6edf3urlTb4b4b4.Te6edf3pathname Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3path Tff7b72&& Te6edf3path Tff7b72!== Ta5d6ff"/"Tb4b4b4) Tb4b4b4{
Tff7b72while Tb4b4b4(Te6edf3pathTb4b4b4.Te6edf3length Tff7b72> T79c0ff1 Tff7b72&& Te6edf3pathTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3path Tff7b72= Te6edf3pathTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3out Tff7b72+= Te6edf3pathTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {string | null | undefined} raw
* @returns {boolean}
*/
Tff7b72export Tff7b72function Te6edf3isValidRemoteBackendUrlTb4b4b4(Te6edf3rawTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3raw Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3trimmed Tff7b72= Tffa657StringTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3trimmedTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3normalizeRemoteBackendUrlTb4b4b4(Te6edf3trimmedTb4b4b4) Tff7b72!= Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e/**
* @param {string | null | undefined} storedRemote
* @returns {string}
*/
Tff7b72export Tff7b72function Te6edf3resolveEffectiveBackendUrlTb4b4b4(Te6edf3storedRemoteTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3normalizeRemoteBackendUrlTb4b4b4(Te6edf3storedRemoteTb4b4b4) Tff7b72|| Te6edf3LOCAL_BACKEND_URLTb4b4b4;
Tb4b4b4}
Tff7b72export Tb4b4b4{ Te6edf3LOCAL_BACKEND_URL Tb4b4b4}Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────